package com.jiang.专题.数组.Q6;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/01/18 23:47
 */
class Solution {
//     public String convert(String s, int numRows) {
//         if (numRows == 1){
//             return s;
//         }
//         int circle = 2 * numRows - 2;
//         int column;
//         int column1 = s.length() / circle;
//         if (s.length() % circle == 0) {
//             column = column1 * (numRows - 1);
//         } else {
//             int a;
//             if ((a = (s.length() - (column1 * circle) - numRows)) > 0) {
//                 column = column1 * (numRows - 1) + 1 + a;
//             } else {
//                 column = column1 * (numRows - 1) + 1;
//             }
//         }
//         int[][] arr = new int[numRows][column];
//         int len = 0;

//         label: for (int i = 0; i < column; i++) {
//             for (int j = 0; j < numRows; j++) {
//                 if (len == s.length()) {
//                     break label;
//                 }
//                 if (i % (numRows - 1) == 0) {
//                     arr[j][i] = s.charAt(len);
//                     len++;
//                 } else if ((i + j) % (numRows - 1) == 0) {
//                     arr[j][i] = s.charAt(len);
//                     len++;
//                 }
//             }
//         }

    //         StringBuilder stringBuilder = new StringBuilder();
//         for (int i = 0; i < numRows; i++) {
//             for (int j = 0; j < column; j++) {
//                 if (arr[i][j] != 0) {
//                     stringBuilder.append(Character.toChars(arr[i][j]));
//                 }
//             }
//         }
//         return stringBuilder.toString();
//     }
    public String convert(String s, int numRows) {
        if(numRows < 2) return s;
        List<StringBuilder> rows = new ArrayList<StringBuilder>();
        for(int i = 0; i < numRows; i++) rows.add(new StringBuilder());
        int i = 0, flag = -1;
        for(char c : s.toCharArray()) {
            rows.get(i).append(c);
            if(i == 0 || i == numRows -1) flag = - flag;
            i += flag;
        }
        StringBuilder res = new StringBuilder();
        for(StringBuilder row : rows) res.append(row);
        return res.toString();
    }

}
